package cn.juque.datapipeline.service;

import cn.juque.common.base.PageInfo;
import cn.juque.datapipeline.bo.task.TaskAddBO;
import cn.juque.datapipeline.bo.task.TaskUpdateBO;
import cn.juque.datapipeline.domain.TaskInfoDO;
import cn.juque.datapipeline.domain.TaskInfoSearchParamDO;

import java.util.List;

/**
 * @author JUQUE
 * @version 1.0.0
 * <ul>
 *  <li>simple-generator</li>
 *  <li>任务信息</li>
 * </ul>
 * {@code @date} 2023-03-31 11:52:16
 **/
public interface ITaskInfoService {

    /**
     * 查询
     *
     * @param taskInfo taskInfo
     * @return List<TaskInfo>
     */
    List<TaskInfoDO> listInfoWithoutPage(TaskInfoSearchParamDO taskInfo);

    /**
     * 分页查询
     *
     * @param pageInfo pageInfo
     * @param taskInfo taskInfo
     * @return DataGrid<TaskInfo>
     */
    List<TaskInfoDO> listInfoWithPage(PageInfo pageInfo, TaskInfoSearchParamDO taskInfo);

    /**
     * 详情
     *
     * @param id 主键
     * @return TaskInfo
     */
    TaskInfoDO detail(String id);

    /**
     * 保存
     *
     * @param addBO TaskAddBO
     */
    void saveInfo(TaskAddBO addBO);

    /**
     * 更新
     *
     * @param updateBO TaskUpdateBO
     */
    void updateInfo(TaskUpdateBO updateBO);

    /**
     * 切换状态
     * @param taskId 任务ID
     */
    void triggerEnable(String taskId);

    /**
     * 删除
     *
     * @param ids 主键列表
     */
    void deleteInfo(List<String> ids);
}
